#ifndef SPECPARAMMODEL_H
#define SPECPARAMMODEL_H

#include <QAbstractTableModel>

#include "specparaml.h"

class SpecParamModel : public QAbstractTableModel
{
    Q_OBJECT
public:

    SpecParamModel(SpecParamL *sp , QObject *parent = 0);

    // Obbligatorio per modello sola lettura
    int rowCount(const QModelIndex &parent = QModelIndex()) const;
    int columnCount(const QModelIndex &parent /*= QModelIndex()*/) const;
    QVariant data(const QModelIndex &index, int role) const; // gestisce l'inserimento dei dati e l'estrazione
    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;

    // Obbligatorio per modello resizeble. QModelIndex non serve nel caso di tabelle
    bool insertRows(int position, int rows, const QModelIndex &parent=QModelIndex());
    bool removeRows(int position, int rows, const QModelIndex &parent=QModelIndex());

    // Obbligatorio per modello editabile
    bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole);

    // Per aggiornare la vista quando il modello cambia (WhenExternalDataChange)
    void updateWEDChange(void);

private:
    SpecParamL *m_sp;
};

#endif // SPECPARAMMODEL_H
